package com.pyl.core.utils;

import com.pyl.core.enums.LingResultEnum;
import com.pyl.core.vo.ResultVo;
import com.pyl.core.wraps.URL;

/**
 * 响应数据(结果)最外层对象工具
 * 
 * @author 灵魂贰婶
 * @date 2018/10/15
 */
public class ResultVoUtil {

	@SuppressWarnings("rawtypes")
	public static ResultVo SAVE_SUCCESS = success("保存成功");

	/**
	 * 操作成功
	 * 
	 * @param msg    提示信息
	 * @param object 对象
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static ResultVo success(String msg, Object object) {
		ResultVo resultVo = new ResultVo();
		resultVo.setMsg(msg);
		resultVo.setCode(LingResultEnum.SUCCESS.getCode());
		resultVo.setData(object);
		return resultVo;
	}

	/**
	 * 操作成功，返回url地址
	 * 
	 * @param msg 提示信息
	 * @param url URL包装对象
	 */
	@SuppressWarnings("rawtypes")
	public static ResultVo success(String msg, URL url) {
		return success(msg, url.getUrl());
	}

	/**
	 * 操作成功，使用默认的提示信息
	 * 
	 * @param object 对象
	 */
	@SuppressWarnings("rawtypes")
	public static ResultVo success(Object object) {
		String message = LingResultEnum.SUCCESS.getMessage();
		return success(message, object);
	}

	/**
	 * 操作成功，返回提示信息，不返回数据
	 */
	@SuppressWarnings("rawtypes")
	public static ResultVo success(String msg) {
		Object object = null;
		return success(msg, object);
	}

	/**
	 * 操作成功，不返回数据
	 */
	@SuppressWarnings("rawtypes")
	public static ResultVo success() {
		return success("操作成功", null);
	}

	/**
	 * 操作有误
	 * 
	 * @param code 错误码
	 * @param msg  提示信息
	 */
	@SuppressWarnings("rawtypes")
	public static ResultVo error(Integer code, String msg) {
		ResultVo resultVo = new ResultVo();
		resultVo.setMsg(msg);
		resultVo.setCode(code);
		return resultVo;
	}

	/**
	 * 操作有误，使用默认400错误码
	 * 
	 * @param msg 提示信息
	 */
	@SuppressWarnings("rawtypes")
	public static ResultVo error(String msg) {
		Integer code = LingResultEnum.ERROR.getCode();
		return error(code, msg);
	}

}
